/* 
 * File:   Automato.h
 * Author: fabio
 *
 * Created on 31 de Outubro de 2010, 00:26
 */

#ifndef AUTOMATO_H
#define	AUTOMATO_H
#include <list>
#include <iostream>
#include "Estado.h"
using namespace std;


class Automato;
//class Estado;
//class Transicao;

class Automato {
private:
    list<Estado> _listaEstados;
    int _estadoInicial;

    void criarTransicaoInicial(char caractere);

public:
    Automato();
    Automato(char c);

    int getEstadoInicial();
    void setEstadoInicial(int estado);
    list<Estado> getListaEstados();
    void addEstado(Estado estado);


    Automato RealizarOu();
    Automato RealizarUniao(Automato automato);
    Automato RealizarConcatenacao(Automato automato);
    Automato RealizarRepeticao();

    void Imprimir();
};

#endif	/* AUTOMATO_H */

